package com.takeoff.iot.modbus.common.message;

import com.takeoff.iot.modbus.common.data.ModbusByteArrayData;
import com.takeoff.iot.modbus.common.data.ModbusData;
import com.takeoff.iot.modbus.common.utils.IntegerToByteUtil;

import org.apache.commons.lang3.ArrayUtils;

public class ModbusByteArrayMessage implements ModbusMessage {

	private String deviceGroup;
	private byte[] bytes;
	private ModbusData data;

	public ModbusByteArrayMessage(String deviceGroup, byte[] bytes){
		this.deviceGroup = deviceGroup;
		this.bytes = bytes;
		this.data = new ModbusByteArrayData(ArrayUtils.subarray(bytes, 0, bytes.length));
	}

	@Override
	public String deviceGroup() {
		return this.deviceGroup;
	}

	@Override
	public int length() {
//		byte[] dataLength = ArrayUtils.subarray(bytes, 0, bytes.length);
//		return IntegerToByteUtil.bytesToInt(dataLength);
		return bytes.length;
	}

	@Override
	public int command() {
		return bytes[FUNC_INDEX];
	}

	@Override
	public int type() {
		return bytes[FUNC_INDEX];
	}

	@Override
	public ModbusData data() {
		return this.data;
	}

	@Override
	public byte[] toBytes() {
		return bytes;
	}

}
